<?php

if( !isset($_SESSION['login']) || (strcmp($_SESSION['type_compte'],'enseignant') != 0))
{
  echo "<div class='contenu_haut'>.: Erreur Identification :.</div><div class='contenu_fond'>";
  echo "<div class='erreur_div'>Vous devez etre identifie</div>";
  echo "</div><div class='contenu_bas'></div>";
}
else
{

?>

<!-- ***************************
	 *    Base de données      *
	 *************************** -->

<div class="contenu_haut">.: Base de données :.</div><div class="contenu_fond"> 
<div class='rapport'> <center><a href='../design/images/bdd.jpg'>Schéma complet de la base de données</a> </center> </div>
</div><div class="contenu_bas"></div> 


<!-- ***************************
	 *    Architecture         *
	 *************************** -->

<div class="contenu_haut">.: Architecture utilisée :.</div><div class="contenu_fond"> 
<div class='rapport'>
Notre site web doit permettre la gestion de séances de musculation d'un point de vue enseignant ou élève.<br /><br />

Pour cela nous avons séparé notre site web en deux parties : <br /><br >
<ul>
	<li>Une partie "enseignant"</li>
	<li>Une partie "élève"</li>
</ul>

<br />L’architecture globale suit le schéma suivant : <br /><br />
<img src='../design/images/archi_generale.jpg' width='600px'><br /><br />

A la racine du site, nous trouvons quatre dossiers ainsi que les fichiers partagés entre les parties « etudiant »
et « enseignant ». Ces fichiers sont les fichiers contenant le header, le footer, communs à toutes les pages, 
et le fichier "index.php" permettant de se logger au site.<br /><br />
Le dossier « design » contient tous les fichiers relatifs au design (feuille de style, images). <br /><br />
Le dossier « lib » contient toutes les bibliothèques externes utilisées dans le site. 
Dans notre cas, nous utilisons une bibliothèque Javascript permettant de générer un calendrier interactif ainsi qu’une bibliothèque 
permettant la génération de graphiques en PHP. <br /><br />

Les dossiers « eleve » et « étudiant » ont sensiblement la même organisation : <br /><br />
<img src='../design/images/archi_eleve.jpg' width='600px'><br /><br />

Pour chaque partie (élève ou enseignant), nous trouvons les fichiers javascript_[type].js, menu_[type].php, corps_[type].php et index_[type].php. <br /><br />
<h4>[type] peut être « enseignant » ou « eleve ». </h4> <br /><br />
Le javascript contient l’ensemble des fonctions utiles pour la partie concernée. <br /><br />
Le fichier menu_[type] contient la barre de menu spécifique à la partie concernée. En effet, le menu au niveau « étudiant » est différent du menu « enseignant ». <br /><br />
Le fichier index_[type].php est le fichier principal pour chaque partie, il inclut les fichiers header.php, footer.php, menu_[type].php et corps_[type].php. <br /><br />
Le fichier corps_[type].php fait le mapping entre l’url saisie et la vue affichée. <br />
En effet, pour atteindre la vue qui affiche les ateliers coté élève, l’url est  : <br /><br />
<h4>localhost://eleve/index_eleve.php?view=liste_atelier </h4> <br /><br />
Le fichier corps_[type].php lit la valeur de la variable GET[‘view’] et inclut le bon fichier php correspondant à la vue demandée. Dans le cas précédent, le fichier corps_eleve.php va inclure le fichier  de vue liste_atelier.php. <br /><br />
	
Nous avons séparé le formatage et l’affichage des données de la récupération et du traitement des données elles-mêmes. En effet, les fichiers de vue (qui sont inclus par corps_[type].php) ne font que formater les données et les afficher. Ces données sont récupérées et traitées par le fichier correspondant à la vue dans le dossier "actions_[type]". Ainsi, pour chaque fichier de vue, un fichier d’action est associé. La communication entre les deux fichiers se fait par le biais de fonctions Javascript. Ces fonctions envoient des requêtes AJAX au fichier d’action, puis récupère la réponse de celui-ci et rafraichissent la vue de manière complètement transparente pour l’utilisateur. Ainsi, l’utilisateur peut envoyer des formulaires et voir les résultats sans que l’url n’en soit affectée et sans rafraichissement de page. <br /><br />

Nous pouvons par exemple détailler le mécanisme pour insérer un nouvel atelier dans la base depuis la vue d’insertion d’atelier. 
Lors du click sur le bouton OK qui insère le nouvel atelier, l’enchainement des actions est le suivant : <br /><br />
<img src='../design/images/mecanisme.jpg' width='600px'><br /><br />

<ol class='number_ul'>
<li>Le click sur le bouton appelle la fonction Javascript inserer_atelier().</li>
<li>Le Javascript envoie une requete AJAX POST au fichier liste_atelier.php avec tous les paramètres saisis dans la vue (nom de l’atelier, consigne de sécurité etc …) .</li>
<li>Le fichier d’action envoie la requete d’insertion à la base de données.</li>
<li>Le fichier d’action récupère la réponse de la base de données.</li>
<li>Le Javascript récupère le retour du fichier d’action.</li>
<li>Le Javascript met à jour la vue en fonction de la réussite ou non de l’insertion (affichage d’un message d’erreur ou de réussite).</li>
</ol> <br />

Ce mécanisme est utilisé dans toutes les vues, que ce soit pour l’affichage simple des données ou pour tous types d’actions sur celles-ci (insertion, modification ou suppression).<br /><br />
</div>
</div><div class="contenu_bas"></div> 


<!-- ***************************
	 *     Améliorations       *
	 *************************** -->

<div class="contenu_haut">.: Améliorations possibles :.</div><div class="contenu_fond"> 
<div class='rapport'>
Etant donné le volume horaire dont nous disposions, nous n’avons pas pu implémenter toutes les fonctions originalement définies. <br />
Notre objectif principal était donc d’implémenter une version fonctionnelle, mais non aboutie. 
Les fonctions suivantes, jugées secondaires, n’ont pas été implémentées : <br /><br />

<ul>
	<li>Import des données au format CSV.</li>
	<li>Export des données au format CSV, PDF.</li>
	<li>Modification, suppression des ateliers, élèves.</li>
	<li>Génération de graphes permettant de visualiser l’évolution de la charge par zones corporelles.</li>
	<li>Gestion de deux types d’ateliers :
	<ul>
		<li>Atelier de type « charge-série-répétition » comme le « Développé couché »</li>
		<li>Atelier de type « vitesse-temps » comme la corde à sauter.</li>
	</ul>
	Dans le modèle existant, nous n’avons implémenté que le premier type d’atelier.
	</li>
</ul>
</div>
</div><div class="contenu_bas"></div> 


<!-- ***************************
	 *   Volumétrie des étapes *
	 *************************** -->

<div class="contenu_haut">.: Volumétrie des étapes :.</div><div class="contenu_fond"> 
<div class='rapport'>
<h4>Etape 1 : Conception de la base de données </h4> <br /><br />

Dans cette étape, nous avons défini les informations qui devaient être stockées afin de dégager un modèle relationnel cohérent. Nous avons ensuite normalisé ce modèle afin d’éviter le plus possible de redondances dans la base.<br />
Temps consacré : 1h / 2h <br /><br />

<h4>Etape 2 : Conception du design général du site et de la hiérarchie des dossiers et fichiers. </h4> <br /><br />

Nous avons pensé et élaboré une hiérarchie globale cohérente des fichiers afin de construire une architecture simple et efficace. Dans cette étape, nous avons également défini et construit le design du site. <br />
Temps consacré : 2h / 3h. <br /><br />

<h4>Etape 3 : Elaboration des maquettes des vues</h4>  <br /><br />

Nous avons ici créé les plans structurels des différentes vues afin de pouvoir les implémenter directement et rapidement par la suite. Nous avons également défini les « frontières » de notre projet. En effet, c’est à ce moment que nous avons choisi quelles fonctions étaient « secondaires » ou « principales ». <br />
Temps consacré : 4h / 5h <br /><br />

<h4>Etape 4 : Développement des vues.</h4>  <br /><br />

Nous avons finalement distribué les différentes vues à implémenter entre les membres du projet. Nous avons utiliser un serveur SVN afin de pouvoir travailler parallèlement de manière efficace. <br />
Temps consacré : ~40h (temps cumulé pour tous les membres du projet). <br /><br />
</div>
</div><div class="contenu_bas"></div> 



<?php
} // Balise de fermeture du check_session
?>
